catkin_make ERROR:
编写完节点源代码后,catkin-make编译包时出现的错误分析。
CMakelist.txt参数
project()
包的名字,根据catkin_create_pkg后面的名字命名。注意需要与后面的参数对准。
find_package()
编译包需要的依赖项。可以自己添加。格式为:
1 | find_package(catkin REQUIRED COMPONENTS //必须的 |
include_directories()
如果包有头文件,需要注意该选项。格式为:
1 | include_directories( |
add_executable()
指定编译的文件,以及要生成的可执行文件,即节点。需要注意的是,自动生成的CMakelist文件中,会自动把节点和源文件等命名为xxx_node的格式,需要修改。
1 | add_executable(${PROJECT_NAME}_node src/mynode_node.cpp) //自动生成的 |
将调用src/main.cpp,src/file1.cpp和src/file2.cpp生成名为myNode的目标可执行文件
target_link_libraries()
指定生成的可执行文件需要链接的库文件。格式为:
1 | target_link_libraries(${PROJECT_NAME}_node |
错误1:Undefined reference to ‘’ros::init()’’
出现该编译错误的原因很可能是
- 头文件问题
- CMakelist.txt问题
头文件问题
检查包含的头文件,有可能写错。
CMakelist.txt问题
主要检查以下几个方面:project名字,依赖包是否完整,头文件夹是否包含,